package cn.edu.fzu.homemaking.company.service.impl;

import cn.edu.fzu.homemaking.company.domain.entity.CompanyServer;
import cn.edu.fzu.homemaking.company.domain.enums.ServerStatusEnum;
import cn.edu.fzu.homemaking.company.domain.enums.ServerPriceModeEnum;
import cn.edu.fzu.homemaking.company.mapper.CompanyServerMapper;
import cn.edu.fzu.homemaking.company.service.CompanyServerService;
import cn.edu.fzu.homemaking.redis.Redis;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author wanjie
 * @version 1.0
 */
@Service
public class CompanyServerServiceImpl implements CompanyServerService {

    @Resource
    private CompanyServerMapper companyServerMapper;

    @Override
    public List<CompanyServer> queryAllCompanyServers(Long companyId, Long labelId, String name,
                                                      ServerPriceModeEnum chargeMode, ServerStatusEnum status) {
        return companyServerMapper.queryAllCompanyServers(companyId, labelId, name, chargeMode, status);
    }


    @Override
    @Redis(value = "server:%d", ttl = 24 * 60 * 60 * 60)
    public CompanyServer getById(Long id) {
        return companyServerMapper.getById(id);
    }


    @Override
    public void insertCompanyServer(Long companyId, Long labelId, String name, ServerPriceModeEnum chargeMode,
                                    Double price, ServerStatusEnum status) {
        CompanyServer companyServer = new CompanyServer();
        companyServer.setCompanyId(companyId);
        companyServer.setLabelId(labelId);
        companyServer.setName(name);
        companyServer.setChargeMode(chargeMode);
        companyServer.setPrice(price);
        companyServer.setStatus(status);
        companyServerMapper.insertCompanyServer(companyServer);
    }


    @Override
    public void updateCompanyServerStatus(Long id, ServerStatusEnum status) {
        companyServerMapper.updateCompanyServerStatus(id, ServerStatusEnum.OFF);
    }


    @Override
    public void updateCompanyServer(Long id, Long labelId, String name, ServerPriceModeEnum chargeMode,
                                    Double price, ServerStatusEnum status) {
        CompanyServer companyServer = new CompanyServer();
        companyServer.setId(id);
        companyServer.setLabelId(labelId);
        companyServer.setName(name);
        companyServer.setChargeMode(chargeMode);
        companyServer.setPrice(price);
        companyServer.setStatus(status);
        companyServerMapper.updateCompanyServer(companyServer);

    }


    @Override
    public void deleteCompanyServer(Long id) {
        companyServerMapper.deleteCompanyServer(id);
    }

}
